package cn.usts.edu.lesson06;

/**
 * 一个线程可以在给定时间点处于一个状态。 这些状态是不反映任何操作系统线程状态的虚拟机状态。
 *
 * 线程状态。 线程可以处于以下状态之一：
 * NEW              尚未启动的线程处于此状态。
 * RUNNABLE         在Java虚拟机中执行的线程处于此状态。
 * BLOCKED          被阻塞等待监视器锁定的线程处于此状态。
 * WAITING          正在等待另一个线程执行特定动作的线程处于此状态。
 * TIMED_WAITING    正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。
 * TERMINATED       已退出的线程处于此状态。
 *
 *
 * */

public class ThreadStateDemo implements Runnable {
    @Override
    public void run() {

    }

    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(
                // lambda表达式实现的run方法.
                ()->{
            for (int i = 0; i < 5; i++) {
                try {
                    Thread.sleep(1000);// 延时1s
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("------------------");
        });


        System.out.println(thread.getState()); // 获取启动前的状态

        // 线程启动
        thread.start();
        System.out.println(thread.getState());// 获取启动时的状态

        while (thread.getState()!=Thread.State.TERMINATED){
            Thread.sleep(900); // 延时100ms刷新状态
            System.out.println(thread.getState());

        }
    }
}
